Local scanning device clients typically communicate with local scanning devices via one of a number of different local device interfaces that allow the client's scanner driver to send device commands to the scanning device, one command at a time. Typical local device interfaces include USB interfaces, SCSI interfaces, parallel port interfaces, and the like. The client's driver typically sends scanning device commands to the scanning device to configure the scanning device before issuing a scan job, to issue the scan job, to retrieve an entire scan image, and to retrieve one band of scan image data at a time. Scanning device configuration includes setting scanning device lamp settings, getting scanning device lamp status, calibrating the scanning device, setting an image gamma curve at the scanning device, and the like. Some of these configuration actions involve sending a large block of binary data to the scanning device to effect configuration of the scanning device.
Networked scanning device clients often communicate with networked scanning devices via a device service protocol. One such device service protocol is the Microsoft® Web Services on Devices (WSD) architecture. The WSD architecture allows networked clients to discover and access a networked scanning device and its associated services across the network. The WSD architecture for Scan Services is described in “Scan Service Definition Version 1.0 For Web Services on Devices”, Nov. 9, 2006, Microsoft Corporation, the contents of which are hereby incorporated by reference as if fully stated herein.
Such a device service protocol further provides for device discovery, description, control, and eventing. For example, the WSD architecture supports device discovery, description, control, and eventing, through the use of the Web Services on Devices Application Programming Interface (WSDAPI). The WSDAPI references a WSD XML schema which defines baseline functions exposed by a networked scanning device via a WSD port. The WSD XML schema also defines baseline parameters for the baseline functions. The client instructs the networked scanning device to execute a WSD function by sending the scanning device a request via the WSD port.
Baseline WSD functions include a GetScannerElement function, a CreateScanJob function, and a RetrieveImage function. The GetScannerElement function returns certain properties of the scanning device. Typical properties include Scanner Description, Scanner Configuration, Scanner Status, and the default Scan Properties. CreateScanJob creates a scan job that is performed by the networked scanning device. In response to receiving a request to execute the CreateScanJob function from the client, the networked scanning device performs the scan job to generate a scan image. RetrieveImage sends the entire scan image from the networked scanning device to the client in a data stream in a block of binary data.